//
// Created by 86131 on 2023/12/21.
//
#include "bits/stdc++.h"
using namespace std;
struct Stu{
    long long int id;
    int src;
    int ben_pai;
    int kc;
};
bool cmp(const Stu&a,const Stu&b){
    if(a.src==b.src){
        return a.id>b.id;
    }
    return a.src<b.src;
}
int main(){
    int n;
    cin>>n;
    vector<vector<Stu>> stu1;
    long long int sum=0;
    for(int i=0;i<n;i++){
        vector<Stu> kao;
        int r;
        cin>>r;
        sum+=r;
        for(int j=0;j<r;j++){
            Stu stu;
            cin>>stu.id>>stu.src;
            stu.kc=i+1;
            kao.push_back(stu);
        }
        sort(kao.begin(), kao.end(),cmp);
        int pai =1;
        for(int j=r-1;j>=0;j--){
            if(j==r-1){kao[j].ben_pai=pai;
                pai++;
                continue;}
            kao[j].ben_pai=pai;
            pai++;
            if(kao[j].src==kao[j+1].src){
                kao[j].ben_pai=kao[j+1].ben_pai;
                continue;
            }
        }
        stu1.push_back(kao);
    }
    cout<<sum<<endl;
    for(int i=1;i<=sum;i++){
        int max_s;
        int s_pai;
        int pai=1;
        int max_kao=0;
        int max=0;
        for(int j=0;j<n;j++){
            if(stu1[j].size()!=0){
                Stu stu_0=stu1[j].back();
                if(stu_0.src>max){
                    max = stu_0.src;
                    max_kao = j;
                }
                if(stu_0.src==max){
                    if(stu_0.id<stu1[max_kao].back().id){
                        max_kao = j;
                    }
                }
            }
        }
        if(i==1){
            s_pai=i;
            max_s=max;
        }
        if(max==max_s){
            pai = s_pai;
        }else{
            pai=i;
        }
        cout<<stu1[max_kao].back().id<<" "<<pai<<" "<<stu1[max_kao].back().kc<<" "<<stu1[max_kao].back().ben_pai<<endl;
        max_s = max;
        s_pai=pai;
        stu1[max_kao].pop_back();
    }

}